# 搬家具规则：
# 1.家具分不同的类型,并占用不同的面积
# 2.输出家具信息时，显示家具的类型和家具占用的面积
# 3.房子有自己的地址和占用的面积
# 4.房子可以添加家具，如果房子的剩余面积可以容纳家具，则提示添加成功，否则提示添加失败
# 5.输出房子信息时，可以显示房子的地址，占地面积，剩余面积
class Furniture(object):

    def __init__(self, f_type: str, area: int) -> None:
        super().__init__()
        self.type = f_type
        self.area = area

    def __str__(self) -> str:
        return '家具类型:' + self.type + '  家具面积:' + str(self.area) + '平方米'


class House(object):

    def __init__(self, address: str, area: int) -> None:
        super().__init__()
        self.address = address
        self.area = area
        self.surplus = area
        self.h_furniture = []

    def __str__(self) -> str:
        return '房子的地址是:' + self.address + '  房屋面积:' + str(self.area) + '平方米' + ' 剩余面积:' + str(
            self.surplus) + '平方米  ' + self.show_furniture()

    # 显示家具名称
    def show_furniture(self):
        if len(self.h_furniture) == 0:
            return ''
        else:
            str1 = ''
            for x in self.h_furniture:
                str1 = str1 + x.type + ','
            return '家具有: ' + str1

    # 添加家具
    def add_furniture(self, fur: Furniture):
        if fur.area <= self.surplus:
            self.surplus = self.surplus - fur.area
            self.h_furniture.append(fur)
        else:
            print('添加家具失败,没有可以添加的地方了！')


f = Furniture('沙发', 10)
f1 = Furniture('大柜子', 35)
f2 = Furniture('双人床', 40)
f3 = Furniture('电视柜', 60)
print(f)
print(f1)
print(f2)
print(f3)

h = House('汤臣一品', 100)
h.add_furniture(f)
h.add_furniture(f1)
h.add_furniture(f2)
h.add_furniture(f3)
print(h)
